home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-06-17 | 1.1 KB | 58 lines | [TEXT/CWIE] |
- // ApplicationTaskQueue.cp
-
- #ifndef ApplicationTaskQueue_h
- #include "ApplicationTaskQueue.h"
- #endif
- #ifndef ApplicationWaker_h
- #include "ApplicationWaker.h"
- #endif
- #ifndef ConfigureDeferredTaskFaking_h
- #include "ConfigureDeferredTaskFaking.h"
- #endif
- #ifndef FakeDeferredTaskQueue_h
- #include "FakeDeferredTaskQueue.h"
- #endif
-
- ApplicationTaskQueue::ApplicationTaskQueue()
- : waker( ApplicationWaker::The() )
- {
- Assert( ApplicationTime::IsNow() );
- }
-
- ApplicationTaskQueue& ApplicationTaskQueue::The()
- {
- static ApplicationTaskQueue the;
- return the;
- }
-
- bool ApplicationTaskQueue::IsEmpty() const
- {
- if ( useFakeDeferredTasks )
- return queue.IsEmpty() && FakeDeferredTaskQueue::The().IsEmpty();
-
- return queue.IsEmpty();
- }
-
- void ApplicationTaskQueue::Put( Link& link )
- {
- queue.Put( link );
- if ( !ApplicationTime::IsNow() )
- waker.StartAlarm();
- }
-
- void ApplicationTaskQueue::ExecuteOne()
- {
- ApplicationTime time;
- waker.StopAlarm();
-
- if ( useFakeDeferredTasks )
- FakeDeferredTaskQueue::The().ExecuteAll();
-
- ApplicationTimeProcedure *procedure = queue.Get();
-
- if ( procedure == 0 )
- return;
-
- (*procedure)( time );
- }
-